/************************************************************
 * Project Name         [Thinking_In_Java]
 * File Name            [MathUtil.java]
 * Creation Date        [10-Jul-2014]
 * 
 * Copyright© ge.y.yang@gmail.com All Rights Reserved
 * 
 * Work hard, play harder, think big and keep fit
 ************************************************************/
package pkg_01_console_app.goldbach;

/**
 * 
 * @author 不落的太阳(Sean Yang)
 * @version 1.0
 * @since JDK 6
 * 
 */
public class MathUtil {

	/**
	 * 输入一个数, 判断该数是不是素数
	 * 
	 * @param a
	 * @return true 表示a为素数, false 表示a不是素数
	 */
	public static boolean isPrime(int a) {
		double top = Math.floor(Math.sqrt(a)); // 得到小于a开方的最大整数
		for (int i = 2; i < top; i++) { // 如果在2-top之间有能被a整除的数, 证明a不是素数, 方法返回
			if (a % i == 0)
				return false;
		}
		return true; // 如果在2-top之间没有能被a整除的数, 证明a是素数, 方法返回
	}

	/**
	 * 对输入的数进行分解, 并进行判断打印如果满足哥德巴赫猜想打印"满足哥德巴赫猜想", 否则打印"不满足哥德巴赫猜想"
	 * 
	 * @param a
	 */
	public static void decomposing(int a) {
		for (int i = 3; i <= a / 2; i++) { // 从3-a/2循环判断a是否是两个素数的和
			if (isPrime(i) && isPrime(a - i)) {
				System.out.println("满足哥德巴赫猜想[" + a + "=" + i + "+" + (a - i)
						+ "]");// 如果找到, 证明满足猜想, 打印结果, 方法返回
				return;
			}
		}
		System.out.println("不满足哥德巴赫猜想"); // 如果未找到, 证明不满足猜想, 打印结果
	}

}
